# encoding: utf-8
# @author: wangxin
# @software: garner
# @file: sendSms.py
# @time: 2025/2/19 15:24
import random


from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
from django_redis import get_redis_connection


def sendSms(phone):

    # 创建AcsClient实例，需替换为您自己的AccessKey信息
    ACCESS_KEY_ID = 'LTAI5tFr1irVazHxeRCNN2S5'  # 在阿里云控制台创建AccessKey时自动生成的一对访问密钥，上面保存的AccessKey
    ACCESS_KEY_SECRET = 'wnuABNUwYUXKDEuxk0q4tiXLeOzz51'  # 在阿里云控制台创建AccessKey时自动生成的一对访问密钥AccessKey
    # 创建AcsClient实例，用于发送请求到阿里云服务，参数包括AccessKey ID和Secret，以及服务区域（这里是杭州）
    client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, 'cn-hangzhou')
    # 生成一个4位随机验证码，随机从0-9数字中,选择4个数字组合成字符串
    code = ''.join(random.sample('0123456789', 4))
    # 创建一个CommonRequest实例，用于设置发送到阿里云短信API的具体参数  [请求参数]   [固定模板无需更改]
    request = CommonRequest()
    request.set_accept_format('json')  # 设置API的响应格式为json
    request.set_domain('dysmsapi.aliyuncs.com')  # 设置调用的短信API的域名
    request.set_method('POST')  # 设置请求方式为POST
    request.set_protocol_type('https')  # 设置请求协议为HTTPS
    request.set_version('2017-05-25')  # 设置API的版本号
    request.set_action_name('SendSms')  # 设置调用的操作接口名为SendSm

    # 以下是短信API所需的参数 [短信参数] 【更换中间三个】
    request.add_query_param('RegionId', "cn-hangzhou")  # 设置服务区域，与客户端实例保持一致
    request.add_query_param('PhoneNumbers', "13281652571")  # 设置接收短信的手机号码
    request.add_query_param('SignName', "ruici后台管理系统")  # 设置短信签名，这在阿里云短信服务中预设
    request.add_query_param('TemplateCode', "SMS_479085196")  # 设置短信模板ID，这在阿里云短信服务中预设
    request.add_query_param('TemplateParam', '{"code": "%s"}' % code)  # 设置短信模板中的变量，这里是验证码
    response = client.do_action_with_exception(request)
    # 短信结果
    print(response)
    #验证码保存到redis
    redis_conn = get_redis_connection('default')
    redis_conn.setex("sms_code:%s" % phone, 1500, code)









    # 将验证码文本存储到Redis中，并设置过期时间
    # redis_conn.setex('Sms_rigister%s' % phone, 1500, code)
    # 发送短信请求并获取返回结果


